﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Lavanderia.Entities;
using Lavanderia.BL;
using Microsoft.Practices.Unity;

namespace Lavanderia.UI
{
    public partial class FrmMenu : Telerik.WinControls.UI.RadRibbonForm
    {
        [Dependency]
        public IUsuarioMenuBL usuMenuBL { get; set; }

        public FrmMenu()
        {
            InitializeComponent();
            this.BuilUp();
            this.FormClosed += FrmMenu_FormClosed;
        }

        private void FrmMenu_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
        {
            Application.Exit();
        }

        public USUARIO currentUsuario { get; set; }

        private void FrmMenu_Load(object sender, EventArgs e)
        {
            if (currentUsuario != null)
            {
                menuLlena();
                Text = "BIENVENIDO: " + currentUsuario.TRABAJADOR.NombreCompleto;
            }
        }

        public void menuLlena()
        {
            var datoUsuario = usuMenuBL.GetAllFromUsuarioByPersonaFromLogin(currentUsuario.TRABAJADOR.Dni);

            var permisos = (from c in usuMenuBL.GetAllFromUsuarioMenuByMenuId(datoUsuario.IdUsuario)
                            select c.MENU.Tag.ToString()).ToArray();

            Telerik.WinControls.RadItem[] menuRibon = new Telerik.WinControls.RadItem[] {
            this.Mantenimiento,this.Operador,this.busOperador,this.regOperador,
            this.Sexo,this.busSexo,this.regSexo,this.EstadoCivil,this.busEstadoCivil,this.regEstadoCivil,
            this.Administrador,this.Usuario,this.busUsuario,this.regUsuario,this.Trabajador,this.busTrabajador,this.regTrabajador,this.Rol,this.busRol,this.regRol,
            this.Caja,this.Arqueo,this.busArquero,this.busArqueoResinas,this.busArqueoResinas,this.Cierre,this.busCierre,this.busCierreResinas,this.regCierreCaja,
            this.Ventas,this.Producto,this.busProducto,this.regProducto,this.Cliente,this.busCliente,this.regCliente,this.Venta,this.busVenta,this.regVenta,
            this.venderResinas,this.busVentaResinas,this.regVentaResinas,this.resinas,this.busResinas12,this.regResinas12,this.clienteOp,this.busClienteOp,this.regClienteOp,
            this.Movimientos,this.Egresos,this.busEgresos,this.regEgresos,
            this.Reportes,this.RProducto,this.busRptProducto,this.busMrgProducto,this.RResina,this.busRptResinas,this.busMrgResinas,this.RVenta,this.RVentResina};

            //obtengo todos los PERMISOS NO ASIGNADOS al usuario
            var noVisible = from nv in menuRibon
                            where !permisos.Contains(nv.Tag.ToString())
                            select nv;

            //coloco NO VISIBLE a los permisos no asignados
            noVisible.ToList().ForEach(nv => nv.Visibility = Telerik.WinControls.ElementVisibility.Collapsed);
        }


        private void busEstadoCivil_Click(object sender, EventArgs e)
        {
            FrmEstadoCivil frm = new FrmEstadoCivil();
            frm.currentUsuarioEstadoCivil = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void regEstadoCivil_Click(object sender, EventArgs e)
        {
            FrmMttoEstadoCivil frm = new FrmMttoEstadoCivil();
            frm.NuevEstCivil();
            frm.MdiParent = this;
            frm.Show();
            //radRibbonBar1.Expanded = false;
        }


        private void busOperador_Click(object sender, EventArgs e)
        {
            FrmOperador frm = new FrmOperador();
            frm.currentUsuarioOperador = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void regOperador_Click(object sender, EventArgs e)
        {
            FrmMttoOperador frm = new FrmMttoOperador();
            frm.NuevaOperador();
            frm.MdiParent = this;
            frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busRol_Click(object sender, EventArgs e)
        {
            FrmRol frm = new FrmRol();
            frm.currentUsuarioRol = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void regRol_Click(object sender, EventArgs e)
        {
            FrmMttoRol frm = new FrmMttoRol();
            frm.NuevoRol();
            frm.MdiParent = this;
            frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busSexo_Click(object sender, EventArgs e)
        {
            FrmSexo frm = new FrmSexo();
            frm.currentUsuarioSexo = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void regSexo_Click(object sender, EventArgs e)
        {
            FrmMttoSexo frm = new FrmMttoSexo();
            frm.NuevoSexo();
            frm.MdiParent = this;
            frm.Show();
            //radRibbonBar1.Expanded = false;
        }


        private void busVenta_Click(object sender, EventArgs e)
        {
            FrmVenta frm = new FrmVenta();
            frm.currentUsuarioVenta = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regVenta_Click(object sender, EventArgs e)
        {
            FrmMttoVenta frm = new FrmMttoVenta();
            frm.currentUsuarioVenta = currentUsuario;
            frm.NuevaVenta();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busProducto_Click(object sender, EventArgs e)
        {
            //FrmProducto frm = new FrmProducto();
            //frm.currentUsuarioProducto = currentUsuario;
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void regProducto_Click(object sender, EventArgs e)
        {
            //FrmMttoProducto frm = new FrmMttoProducto();
            //frm.NuevoProducto();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busCliente_Click(object sender, EventArgs e)
        {
            FrmCliente frm = new FrmCliente();
            frm.currentUsuarioCliente = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regCliente_Click(object sender, EventArgs e)
        {
            FrmMttoCliente frm = new FrmMttoCliente();
            frm.NuevoCliente();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busArquero_Click(object sender, EventArgs e)
        {
            //FrmArqueoCaja frm = new FrmArqueoCaja();
            //frm.currentUsuarioArqueo = currentUsuario;
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busCierre_Click(object sender, EventArgs e)
        {
            //FrmCierreCaja frm = new FrmCierreCaja();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busUsuario_Click(object sender, EventArgs e)
        {
            FrmUsuario frm = new FrmUsuario();
            frm.currentUsuarioUsuario = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regUsuario_Click(object sender, EventArgs e)
        {
            FrmMttoUsuario frm = new FrmMttoUsuario();
            frm.NuevoUsuario();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void busTrabajador_Click(object sender, EventArgs e)
        {
            FrmTrabajador frm = new FrmTrabajador();
            frm.currentUsuarioTrabajador = currentUsuario;
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void regTrabajador_Click(object sender, EventArgs e)
        {
            FrmMttoTrabajador frm = new FrmMttoTrabajador();
            frm.NuevoTrabajador();
            frm.MdiParent = this;
            frm.Show();
            radRibbonBar1.Expanded = false;
        }

        private void cerrarSesion_Click(object sender, EventArgs e)
        {
            //FrmLogin frm = new FrmLogin();
            //frm.Show();
            //this.Hide();
        }

        private void salir_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void cambiarPassword_Click(object sender, EventArgs e)
        {
            //if (currentUsuario != null)
            //{
            //    FrmCambiarPassword frm = new FrmCambiarPassword();
            //    frm._usuario = currentUsuario;
            //    frm.editarUsuario();
            //    frm.ShowDialog();
            //}
            //else
            //{
            //    MessageBox.Show("Debe Iniciar Sesión", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //}
        }


        private void pendientes_Click(object sender, EventArgs e)
        {
            //FrmEntregasPendientes frm = new FrmEntregasPendientes();
            //frm.MdiParent = this;
            //frm.Show();
        }

        private void regCierreCaja_Click(object sender, EventArgs e)
        {
            //FrmMttoCierreCaja frm = new FrmMttoCierreCaja();
            //frm.MdiParent = this;
            //frm.Show();
        }


        private void reporProd_Click(object sender, EventArgs e)
        {
            //FrmReporteProductos frm = new FrmReporteProductos();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void reportResina_Click(object sender, EventArgs e)
        {
            //FrmReporteResinas frm = new FrmReporteResinas();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void reportVentas_Click(object sender, EventArgs e)
        {
            //FrmReporteVentas frm = new FrmReporteVentas();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void reportVentaResinas_Click(object sender, EventArgs e)
        {
            //FrmReporteVentaResinas frm = new FrmReporteVentaResinas();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }


        private void busRptProducto_Click(object sender, EventArgs e)
        {
            //FrmReporteProductos frm = new FrmReporteProductos();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busMrgProducto_Click(object sender, EventArgs e)
        {
            //FrmMargenGanacia frm = new FrmMargenGanacia();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busRptResinas_Click(object sender, EventArgs e)
        {
            //FrmReporteResinas frm = new FrmReporteResinas();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busMrgResinas_Click(object sender, EventArgs e)
        {
            //FrmMargenGanaciaResinas frm = new FrmMargenGanaciaResinas();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busRptVentas_Click(object sender, EventArgs e)
        {
            //FrmReporteVentas frm = new FrmReporteVentas();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busRptVentaResinas_Click(object sender, EventArgs e)
        {
            //FrmReporteVentaResinas frm = new FrmReporteVentaResinas();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busArqueoResinas_Click(object sender, EventArgs e)
        {
            //FrmArqueoCajaResinas frm = new FrmArqueoCajaResinas();
            //frm.currentUsuarioArqueoResinas = currentUsuario;
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busCierreResinas_Click(object sender, EventArgs e)
        {
            //FrmCierreCajaResinas frm = new FrmCierreCajaResinas();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }


        private void busEgresos_Click(object sender, EventArgs e)
        {
            //FrmEgresos frm = new FrmEgresos();
            //frm.currentUsuarioEgresos = currentUsuario;
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void regEgresos_Click(object sender, EventArgs e)
        {
            //FrmMttoEgresos frm = new FrmMttoEgresos();
            //frm.currentUsuarioEgreso = currentUsuario;
            //frm.NuevoEgreso();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busRptEgresos_Click(object sender, EventArgs e)
        {
            //FrmReporteEgresos frm = new FrmReporteEgresos();
            //frm.MdiParent = this;
            //frm.Show();
            //radRibbonBar1.Expanded = false;
        }

        private void busHotel_Click(object sender, EventArgs e)
        {
            FrmHotel frm = new FrmHotel();
            frm.MdiParent = this;
            frm.Show();
        }

        private void regHoel_Click(object sender, EventArgs e)
        {
            FrmMttoHotel frm = new FrmMttoHotel();
            frm.NuevoHotel();
            frm.MdiParent = this;
            frm.Show();
            //radRibbonBar1.Expanded = false;
        }
    }
}
